♻️ refactor(tests): Rename EIP 7708 selfdestruct log to burn#2211
Conversation
Codecov Report✅ All modified and coverable lines are covered by tests. Additional details and impacted files@@ Coverage Diff @@
## eips/amsterdam/eip-7708 #2211 +/- ##
===========================================================
- Coverage 86.14% 83.93% -2.22%
===========================================================
Files 599 642 +43
Lines 39491 42223 +2732
Branches 3782 4062 +280
===========================================================
+ Hits 34021 35440 +1419
- Misses 4848 6055 +1207
- Partials 622 728 +106
Flags with carried forward coverage won't be shown. Click here to find out more. ☔ View full report in Codecov by Sentry. 🚀 New features to boost your workflow:
|
spencer-tb
left a comment
There was a problem hiding this comment.
LGTM! Just added some small nits. Lets rebase the on the EIPs branch once the EIPs branch is up to date with latest forks/amsterdam, so CI passes.
cb4e30b to
636e37b
Compare
df25666 to
bf3646d
Compare
fselmo
left a comment
There was a problem hiding this comment.
lgtm. eips/amsterdam/eip-7708 was rebased so I reset this branch to it and cherry-picked these commits back into it with no conflicts so I pushed these up. Will wait for CI and we can merge 🚀
087bc07
into
ethereum:eips/amsterdam/eip-7708
* ♻️ refactor: Rename selfdestruct log to burn * 🥢 nit: * chore(tests): fix stale selfdestruct references and rename to burn --------- Co-authored-by: raxhvl <raxhvl@users.noreply.github.com> Co-authored-by: spencer-tb <spencer.tb@ethereum.org>
…m#2211) * ♻️ refactor: Rename selfdestruct log to burn * 🥢 nit: * chore(tests): fix stale selfdestruct references and rename to burn --------- Co-authored-by: raxhvl <raxhvl@users.noreply.github.com> Co-authored-by: spencer-tb <spencer.tb@ethereum.org>
…m#2211) * ♻️ refactor: Rename selfdestruct log to burn * 🥢 nit: * chore(tests): fix stale selfdestruct references and rename to burn --------- Co-authored-by: raxhvl <raxhvl@users.noreply.github.com> Co-authored-by: spencer-tb <spencer.tb@ethereum.org>
* ♻️ refactor: Rename selfdestruct log to burn * 🥢 nit: * chore(tests): fix stale selfdestruct references and rename to burn --------- Co-authored-by: raxhvl <raxhvl@users.noreply.github.com> Co-authored-by: spencer-tb <spencer.tb@ethereum.org>
* ♻️ refactor: Rename selfdestruct log to burn * 🥢 nit: * chore(tests): fix stale selfdestruct references and rename to burn --------- Co-authored-by: raxhvl <raxhvl@users.noreply.github.com> Co-authored-by: spencer-tb <spencer.tb@ethereum.org>
* ♻️ refactor: Rename selfdestruct log to burn * 🥢 nit: * chore(tests): fix stale selfdestruct references and rename to burn --------- Co-authored-by: raxhvl <raxhvl@users.noreply.github.com> Co-authored-by: spencer-tb <spencer.tb@ethereum.org>
* ♻️ refactor: Rename selfdestruct log to burn * 🥢 nit: * chore(tests): fix stale selfdestruct references and rename to burn --------- Co-authored-by: raxhvl <raxhvl@users.noreply.github.com> Co-authored-by: spencer-tb <spencer.tb@ethereum.org>
* ♻️ refactor: Rename selfdestruct log to burn * 🥢 nit: * chore(tests): fix stale selfdestruct references and rename to burn --------- Co-authored-by: raxhvl <raxhvl@users.noreply.github.com> Co-authored-by: spencer-tb <spencer.tb@ethereum.org>
…m#2211) * ♻️ refactor: Rename selfdestruct log to burn * 🥢 nit: * chore(tests): fix stale selfdestruct references and rename to burn --------- Co-authored-by: raxhvl <raxhvl@users.noreply.github.com> Co-authored-by: spencer-tb <spencer.tb@ethereum.org>
…m#2211) * ♻️ refactor: Rename selfdestruct log to burn * 🥢 nit: * chore(tests): fix stale selfdestruct references and rename to burn --------- Co-authored-by: raxhvl <raxhvl@users.noreply.github.com> Co-authored-by: spencer-tb <spencer.tb@ethereum.org>
…2844) * feat(spec-specs): Add transfer log for all `CALL*` and `SELFDESTRUCT` fix(spec-specs): correct CR issues, fix formatting fix(spec-specs): inline `execute_code()` to `process_message()` chore(spec-specs): backport changes fix(spec-specs): trim out whitespace in topic hash to match tests feat(spec-specs): add selfdestruct event topic and logging function feat(spec-specs): selfdestruct to self emits selfdestruct event feat(spec-specs): define call success constant feat(spec-specs): emit selfdestruct finalization log for remaining balance * fix(spec-specs): emit account closure logs in lexicographical order * feat(test-tests): add eip-7708 eth transfer log tests test(test-tests): add selfdestruct topic and use empty account test(test-tests): add nested calls log ordering test feat(test-tests): add selfdestruct finalization test fix(test-tests): use spaces in event signature to match spec * fix(spec-specs): Refactor topic strings to match EIP * fix(spec-tests): formatting fixes so static checks pass * fix(spec-specs): Move account closure log emission before priority fee charges (#2059) * fix(spec-specs): Move account closure log emission before priority fee charges * fix(spec-specs): formatting and spelling tweaks * fix(spec-specs): remove duplicate WriteInStaticContext check * refactor(spec-specs): align memory expansion with other opcodes * fix(testing/test): Fix unit test expectation * refactor(spec-specs): move post-mining coinbase balance calculation --------- Co-authored-by: Mario Vega <marioevz@gmail.com> * feat(test-specs): add extra eip-7708 test coverage (#2062) * feat(test-specs): add/refactor tests, add mainnet marked, checklist, coverage check * feat(test-specs): add fork transition test for selfdestruct logs * fix: tests * chore(test-specs): fix fork transition tests * test(test-specs): add code deposit oog test case --------- Co-authored-by: carsons-eels <carson@ethereum.org> Co-authored-by: Mario Vega <marioevz@gmail.com> * feat(spec,test): EIP-7708 spec updates for self as target (#2086) * fix(spec,text): Updates to EIP-7708 spec for bal-devnet-2 - fix(spec,test): EIP-7708 emit selfdestruct logs only in same tx - fix(spec,test): EIP-7708, only emit on transfers to other accounts - Add more tests that match these edge cases * feat(test): tests for finalization selfdest + bal transfer in lexicographic order * fix: changes from comments on PR #2086 * add more variants to test_selfdestruct_same_tx_via_call * fix: docstring * refactor: improvements from comments on PR #2086 * Update test to use dynamic addresses --------- Co-authored-by: Mario Vega <marioevz@gmail.com> * feat(test): extend EIP-7708 tests from cases in tracker (#1875) (#2106) - Add CREATE2 support via with_all_create_opcodes marker - Add tests for SELFDESTRUCT to coinbase - revealed a change needed since the last update was made to the EIP that should be included in the currect refspec (miner fees paid before finalization LOG2). * fix(test): Use new ``pre_alloc_mutable`` marker for eip7708 test (#2199) * fix(test): Update test to account for recent Initcode updates * 🧹 chore: Remove duplicate test (#2210) Co-authored-by: raxhvl <raxhvl@users.noreply.github.com> * ♻️ refactor(tests): Rename EIP 7708 selfdestruct log to burn (#2211) * ♻️ refactor: Rename selfdestruct log to burn * 🥢 nit: * chore(tests): fix stale selfdestruct references and rename to burn --------- Co-authored-by: raxhvl <raxhvl@users.noreply.github.com> Co-authored-by: spencer-tb <spencer.tb@ethereum.org> * fix(specs): Merge issues * fix(tests): Merge issues * refactor(test-forks): Add EIP-7708 * refactor(tests): Condition EIP-7708 tests to EIP inclusion * feat(tests): EIP-7708 - finalization burn log ordering + coinbase fee no-log (#2717) * feat(tests): EIP-7708 - multi-account finalization burn log ordering Adds a dedicated test that proves finalization burn logs are emitted in lexicographical address order when multiple accounts are marked for deletion in the same transaction. Parametrized over N in {2, 5}. N accounts are created and SELFDESTRUCT'd in the same tx, then funded via payer contracts called in REVERSE sorted address order with distinct nonzero amounts. Each destroyed account ends with a unique nonzero balance at finalization, so ordering by address vs. by call order is always distinguishable. Addresses issue #2691. * feat(tests): EIP-7708 - coinbase priority fee must not emit transfer log Adds a dedicated test proving the coinbase priority fee payment does not produce a Transfer log. A contract CALLs the coinbase address with nonzero value while the tx pays a nonzero priority fee to that same coinbase. Only the CALL-with-value must produce a Transfer log; the priority fee credit happens outside the EVM as a protocol-level balance change. An implementation that hooks every balance addition (instead of only CALL / SELFDESTRUCT / tx-level value transfers) would emit an extra Transfer log for the fee and fail the exact-log assertion. Addresses issue #2692. * feat(tests): add single account multi transfer test * fix(tests): minor nit --------- Co-authored-by: marioevz <marioevz@gmail.com> * fix(tests): rename GAS_CODE_DEPOSIT_PER_BYTE to CODE_DEPOSIT_PER_BYTE Align EIP-7708 selfdestruct finalization test with the gas constant rename on forks/amsterdam. * fix(tests): EIP-7708 + 8037 cross-EIP fixes * feat(tests): Add EIP-7708 checks to 6780 tests (#2743) * feat(tests): Add EIP-7708 checks to 6780 tests * fix: add another call and properly accumulate so that burn logs are validated * fix(tests): Review fixes --------- Co-authored-by: carsons-eels <carson@ethereum.org> * feat(tests): cover EIP-7708 CREATE log rollback on outer revert (#2785) * feat(tests): cover EIP-7708 CREATE log rollback on outer revert Mirror `test_inner_call_succeeds_outer_reverts_no_log` for the bal-devnet-5 update that brings CREATE/CREATE2 under EIP-7708. A factory CREATEs a child with value (the deployment succeeds and a `factory -> created` log is emitted in the child frame) and then REVERTs; the receipt must record no logs because the outer revert discards the factory's frame along with every log it produced. * feat(tests): Review comments --------- Co-authored-by: marioevz <marioevz@gmail.com> * fix(specs-spec, tests): CR comment fixes * Apply suggestion from @marioevz --------- Co-authored-by: spencer-tb <spencer.tb@ethereum.org> Co-authored-by: Mario Vega <marioevz@gmail.com> Co-authored-by: spencer <spencer.taylor-brown@ethereum.org> Co-authored-by: felipe <fselmo2@gmail.com> Co-authored-by: raxhvl <raxhvl@users.noreply.github.com> Co-authored-by: raxhvl <10168946+raxhvl@users.noreply.github.com> Co-authored-by: danceratopz <danceratopz@gmail.com>
🗒️ Description
ethereum/EIPs#11311 renamed the "Selfdestruct" log topic to "Burn" in the EIP-7708 specification.
The rationale is that "Burn" better describes what happens (ETH is destroyed) rather than how it happens (via the
SELFDESTRUCTopcode). This creates a more consistent API, which reflects the outcome, not the mechanism.What changed
SELFDESTRUCT_TOPICtoBURN_TOPICwith event signatureBurn(address,uint256)emit_selfdestruct_logfunction toemit_burn_log✅ Checklist
toxchecks to avoid unnecessary CI fails, see also Code Standards and Enabling Pre-commit Checks:uvx tox -e statictype(scope):.